//
// Created by ASUS on 2024/2/28.
//

//无修改节点只查询
#include <bits/stdc++.h>

using namespace std;

#define int long long

struct Node{
	int l,r;
	int mx=0;
};

class SegmentTree{
public:
	int n;
	vector<Node> t;
	explicit SegmentTree(int n){
		t=vector<Node>(4*n);
		build(1,1,n);
	}
	~SegmentTree()= default;

	void pushup(int i){
		t[i].mx=max(t[2*i].mx,t[2*i+1].mx);
	}

	void build(int i,int l,int r){
		t[i].l=l;
		t[i].r=r;
		if(l==r){
			return;
		}
		int mid=l+(r-l)/2;
		build(i*2,l,mid);
		build(i*2+1,mid+1,r);
		pushup(i);
	}

	//查询最大值
	int query(int i,int l,int r){
		if(t[i].l>r||t[i].r<l) return 0;
		if(t[i].l>=l&&t[i].r<=r){
			return t[i].mx;
		}
		return max(query(2*i,l,r),query(2*i+1,l,r));
	}

	//查询最大值
	int query(int l,int r){
		return query(1,l,r);
	}

	void update(int i,int l,int r,int v){
		if(t[i].l>r||t[i].r<l) return ;
		if(t[i].l>=l&&t[i].r<=r){
			t[i].mx=max(t[i].mx,v);
			return;
		}
		update(2*i,l,r,v);
		update(2*i+1,l,r,v);
		pushup(i);
	}

	void update(int l,int r,int v){
		update(1,l,r,v);
	}
};

signed main(){
	vector<int> a{0,1,3,6,-1,3,8};
	segmentTree seg(a);
	cout<<seg.query(5,5)<<" "<<endl;
	return 0;
}